package com.demo.controller;

import java.util.HashMap;
import java.util.Map;

public class PartitionAlgorithm {

    // 分区数量
    private static final int PARTITIONS = 4;

    // 客户端ID到分区的映射表
    private static final Map<String, Integer> clientToPartitionMap = new HashMap<>();

    // 分区的分区地址列表
    private static final String[] partitionAddrs = {
            "product_001_p1",
            "product_001_p2",
            "product_001_p3",
            "product_001_p4"
    };

    // 初始化客户端ID到分区的映射表
    static {
        // 假设有一些客户端ID的列表
        String[] clientIds = {
                "client_001",
                "client_002",
                "client_003",
                "client_004",
                "client_005",
                // 添加更多的客户端ID
        };

        // 将客户端ID映射到分区
        for (int i = 0; i < clientIds.length; i++) {
            clientToPartitionMap.put(clientIds[i], i % PARTITIONS);
        }
    }

    // 根据客户端ID获取分区的分区地址
    public static String getAddrByClientId(String clientId) {
        Integer partition = clientToPartitionMap.get(clientId);
        if (partition != null) {
            return partitionAddrs[partition];
        }
        // 处理找不到分区的情况，可以返回默认的分区地址或其他处理逻辑
        // 默认分区地址为 product_001_p1
        return partitionAddrs[0];
    }

    public static void main(String[] args) {
        // 示例调用
        String clientId = "client_006";
        String host = getAddrByClientId(clientId);
        if (host != null) {
            System.out.println("Client ID: " + clientId + " 被映射到分区地址：" + host);
        } else {
            System.out.println("未找到匹配的分区地址！");
        }
    }
}
